home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.5)
-
- import unittest
- from tempfile import mkstemp
- from time import sleep
- import time
- import types
- import feed
- import item
- import database
- import feedparser
- import app
- import dialogs
- import framework
- import os
- import gtcache
- import gettext
- import resources
- import template
- import util
- from template_compiler import TemplateError
- import template_compiler
- from test.framework import DemocracyTestCase
-
- class UnicodeTestDelegate:
-
- def __init__(self):
- self.choice = None
- self.numCalls = 0
-
-
- def runDialog(self, dialog):
- self.numCalls += 1
- dialog.choice = self.choice
- dialog.callback(dialog)
-
-
-
- class UnicodeFeedTestCase(framework.EventLoopTest):
-
- def setUp(self):
- super(UnicodeFeedTestCase, self).setUp()
-
-
- def isProperFeedParserDict(self, parsed, name = 'top'):
- if isinstance(parsed, types.DictionaryType):
- for key, value in parsed.items():
- self.isProperFeedParserDict(value, key)
-
- elif isinstance(parsed, types.ListType) or isinstance(parsed, types.TupleType):
- for value in parsed:
- self.isProperFeedParserDict(value, name)
-
- elif isinstance(parsed, types.StringType):
- self.assert_(name in ('base', 'type', 'encoding', 'version', 'href', 'rel'))
- elif isinstance(parsed, time.struct_time):
- self.assert_(name in ('updated_parsed',))
- elif isinstance(parsed, types.IntType):
- self.assert_(name in ('bozo',))
- elif not isinstance(parsed, types.UnicodeType):
- pass
- self.assert_(isinstance(parsed, types.NoneType))
-
-
- def isASCIIUnicode(self, value):
- if type(value) == types.UnicodeType:
- pass
- return value == value.encode('ascii')
-
-
- def testValidUTF8Feed(self):
- (handle, self.filename) = mkstemp('.xml')
- handle = file(self.filename, 'wb')
- handle.write(u'<?xml version="1.0"?>\n<rss version="2.0">\n <channel>\n <title>Chinese Numbers ○一二三四五六七八九</title>\n <description>Chinese Numbers ○一二三四五六七八九</description>\n <language>zh-zh</language>\n <pubDate>Fri, 25 Aug 2006 17:39:21 GMT</pubDate>\n <generator>Weblog Editor 2.0</generator>\n <managingEditor>editor@example.com</managingEditor>\n <webMaster>webmaster@example.com</webMaster>\n <item>\n\n <title>○一二三四五六七八九</title>\n <link>http://participatoryculture.org/boguslink</link>\n <description>○一二三四五六七八九</description>\n <enclosure url="file://crap" length="0" type="video/mpeg"/>\n <pubDate>Fri, 25 Aug 2006 17:39:21 GMT</pubDate>\n </item>\n </channel>\n</rss>'.encode('utf-8'))
- handle.close()
- myFeed = feed.Feed(u'file://' + self.filename)
- self.forceFeedParserCallback(myFeed)
- self.isProperFeedParserDict(myFeed.parsed)
- self.assertEqual(type(myFeed.getTitle()), types.UnicodeType)
- self.assertEqual(u'Chinese Numbers ○一二三四五六七八九', myFeed.getTitle())
- self.assertEqual(type(myFeed.getDescription()), types.UnicodeType)
- self.assertEqual(u'<span>Chinese Numbers ○一二三四五六七八九</span>', myFeed.getDescription())
- items = database.defaultDatabase.filter((lambda x: x.__class__ == item.Item))
- self.assertEqual(items.len(), 1)
- i = items[0]
- self.assertEqual(type(i.getTitle()), types.UnicodeType)
- self.assertEqual(u'○一二三四五六七八九', i.getTitle())
- self.assertEqual(type(i.getDescription()), types.UnicodeType)
- self.assertEqual(u'<span>○一二三四五六七八九</span>', i.getDescription())
-
-
- def forceFeedParserCallback(self, myFeed):
- myFeed.feedparser_callback(feedparser.parse(myFeed.initialHTML))
-
-
- def testInvalidLatin1Feed(self):
- (handle, self.filename) = mkstemp('.xml')
- handle = file(self.filename, 'wb')
- handle.write('<?xml version="1.0"?>\n<rss version="2.0">\n <channel>\n <title>H\xe4ppy Birthday</title>\n <description>H\xe4ppy Birthday</description>\n <language>zh-zh</language>\n <pubDate>Fri, 25 Aug 2006 17:39:21 GMT</pubDate>\n <generator>Weblog Editor 2.0</generator>\n <managingEditor>editor@example.com</managingEditor>\n <webMaster>webmaster@example.com</webMaster>\n <item>\n <title>H\xe4ppy Birthday</title>\n <link>http://participatoryculture.org/boguslink</link>\n <description>H\xe4ppy Birthday</description>\n <enclosure url="file://crap" length="0" type="video/mpeg"/>\n <pubDate>Fri, 25 Aug 2006 17:39:21 GMT</pubDate>\n </item>\n </channel>\n</rss>')
- handle.close()
- dialogs.delegate = UnicodeTestDelegate()
- dialogs.delegate.choice = dialogs.BUTTON_YES
- myFeed = feed.Feed(u'file://' + self.filename)
- myFeed.update()
- self.processThreads()
- self.processIdles()
- self.assertEqual(len(myFeed.items), 1)
- myItem = myFeed.items[0]
- self.assertEqual(len(myItem.getTitle()), 14)
- self.assertEqual(myItem.getTitle(), u'Häppy Birthday')
-
-
- def testLatin1HTML(self):
- (handle, self.filename) = mkstemp('.html')
- handle = file(self.filename, 'wb')
- handle.write('<?xml version="1.0" encoding="iso-8859-1"?>\n<html>\n <head>\n <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />\n <title>H\xe4ppy Birthday</title>\n </head>\n <body>\n <a href="http://www.wccatv.com/files/video/hbml.mov">H\xe4ppy Birthday</a>\n </body>\n</html>')
- handle.close()
- dialogs.delegate = UnicodeTestDelegate()
- dialogs.delegate.choice = dialogs.BUTTON_YES
- myFeed = feed.Feed(u'file://' + self.filename)
- self.assertEqual(dialogs.delegate.numCalls, 1)
- myFeed.update()
- self.assertEqual(len(myFeed.items), 1)
- myItem = myFeed.items[0]
- self.assertEqual(len(myItem.getTitle()), 14)
- self.assertEqual(myItem.getTitle(), u'Häppy Birthday')
-
-
- def testInvalidLatin1HTML(self):
- (handle, self.filename) = mkstemp('.html')
- handle = file(self.filename, 'wb')
- handle.write('<?xml version="1.0" encoding="utf-8"?>\n<html>\n <head>\n <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\n <title>H\xe4ppy Birthday</title>\n </head>\n <body>\n <a href="http://www.wccatv.com/files/video/hbml.mov">H\xe4ppy Birthday</a>\n </body>\n</html>')
- handle.close()
- dialogs.delegate = UnicodeTestDelegate()
- dialogs.delegate.choice = dialogs.BUTTON_YES
- myFeed = feed.Feed(u'file://' + self.filename)
- self.assertEqual(dialogs.delegate.numCalls, 1)
- myFeed.update()
- self.assertEqual(len(myFeed.items), 1)
- myItem = myFeed.items[0]
- self.assertEqual(len(myItem.getTitle()), 14)
- self.assertEqual(myItem.getTitle(), u'Häppy Birthday')
-
-
- def testUTF8HTML(self):
- (handle, self.filename) = mkstemp('.html')
- handle = file(self.filename, 'wb')
- handle.write('<?xml version="1.0" encoding="utf-8"?>\n<html>\n <head>\n <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\n <title>H\xc3\xa4ppy Birthday</title>\n </head>\n <body>\n <a href="http://www.wccatv.com/files/video/hbml.mov">H\xc3\xa4ppy Birthday</a>\n </body>\n</html>')
- handle.close()
- dialogs.delegate = UnicodeTestDelegate()
- dialogs.delegate.choice = dialogs.BUTTON_YES
- myFeed = feed.Feed(u'file://' + self.filename)
- self.assertEqual(dialogs.delegate.numCalls, 1)
- myFeed.update()
- self.assertEqual(len(myFeed.items), 1)
- myItem = myFeed.items[0]
- self.assertEqual(len(myItem.getTitle()), 14)
- self.assertEqual(myItem.getTitle(), u'Häppy Birthday')
-
-
- def testUTF8HTMLLinks(self):
- (handle, self.filename) = mkstemp('.html')
- handle = file(self.filename, 'wb')
- handle.write('<?xml version="1.0" encoding="utf-8"?>\n<html>\n <head>\n <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\n <title>H\xc3\xa4ppy Birthday</title>\n </head>\n <body>\n <a href="http://www.wccatv.com/files/video/H\xc3\xa4ppy.mov">H\xc3\xa4ppy Birthday</a>\n </body>\n</html>')
- handle.close()
- dialogs.delegate = UnicodeTestDelegate()
- dialogs.delegate.choice = dialogs.BUTTON_YES
- myFeed = feed.Feed(u'file://' + self.filename)
- self.assertEqual(dialogs.delegate.numCalls, 1)
- myFeed.update()
- if len(myFeed.items) > 0:
- self.assertEqual(len(myFeed.items), 1)
- myItem = myFeed.items[0]
- myURL = myItem.getURL()
- self.assertEqual(str(myURL), myURL)
-
-
-
- def testLatin1HTMLLinks(self):
- (handle, self.filename) = mkstemp('.html')
- handle = file(self.filename, 'wb')
- handle.write('<?xml version="1.0" encoding="iso-8859-1"?>\n<html>\n <head>\n <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />\n <title>H\xe4ppy Birthday</title>\n </head>\n <body>\n <a href="http://www.wccatv.com/files/video/H\xe4ppy.mov">H\xe4ppy Birthday</a>\n </body>\n</html>')
- handle.close()
- dialogs.delegate = UnicodeTestDelegate()
- dialogs.delegate.choice = dialogs.BUTTON_YES
- myFeed = feed.Feed(u'file://' + self.filename)
- self.assertEqual(dialogs.delegate.numCalls, 1)
- myFeed.update()
- if len(myFeed.items) > 0:
- self.assertEqual(len(myFeed.items), 1)
- myItem = myFeed.items[0]
- myURL = myItem.getURL()
- self.assertEqual(str(myURL), myURL)
-
-
-
- def testInvalidLatin1HTMLLinks(self):
- (handle, self.filename) = mkstemp('.html')
- handle = file(self.filename, 'wb')
- handle.write('<?xml version="1.0" encoding="iso-8859-1"?>\n<html>\n <head>\n <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />\n <title>H\xc3\xa4ppy Birthday</title>\n </head>\n <body>\n <a href="http://www.wccatv.com/files/video/H\xc3\xa4ppy.mov">H\xc3\xa4ppy Birthday</a>\n </body>\n</html>')
- handle.close()
- dialogs.delegate = UnicodeTestDelegate()
- dialogs.delegate.choice = dialogs.BUTTON_YES
- myFeed = feed.Feed(u'file://' + self.filename)
- self.assertEqual(dialogs.delegate.numCalls, 1)
- myFeed.update()
- if len(myFeed.items) > 0:
- self.assertEqual(len(myFeed.items), 1)
- myItem = myFeed.items[0]
- myURL = myItem.getURL()
- self.assertEqual(str(myURL), myURL)
-
-
-
- def testUTF8HTMLThumbs(self):
- (handle, self.filename) = mkstemp('.html')
- handle = file(self.filename, 'wb')
- handle.write('<?xml version="1.0" encoding="utf-8"?>\n<html>\n <head>\n <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\n <title>H\xc3\xa4ppy Birthday</title>\n </head>\n <body>\n <a href="http://www.wccatv.com/files/video/hbml.mov"><img src="http://www.wccatv.com/files/video/H\xc3\xa4ppy.png"/>H\xc3\xa4ppy Birthday</a>\n </body>\n</html>')
- handle.close()
- dialogs.delegate = UnicodeTestDelegate()
- dialogs.delegate.choice = dialogs.BUTTON_YES
- myFeed = feed.Feed(u'file://' + self.filename)
- self.assertEqual(dialogs.delegate.numCalls, 1)
- myFeed.update()
- self.assertEqual(len(myFeed.items), 1)
- myItem = myFeed.items[0]
- myURL = myItem.getURL()
- self.assertEqual(str(myURL), myURL)
- thumb = myItem.getThumbnailURL()
- if thumb is not None:
- self.assertEqual(str(thumb), thumb)
-
-
-
- def testLatin1HTMLThumbs(self):
- (handle, self.filename) = mkstemp('.html')
- handle = file(self.filename, 'wb')
- handle.write('<?xml version="1.0" encoding="iso-8859-1"?>\n<html>\n <head>\n <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />\n <title>H\xe4ppy Birthday</title>\n </head>\n <body>\n <a href="http://www.wccatv.com/files/video/hbml.mov"><img src="http://www.wccatv.com/files/video/H\xe4ppy.png"/>H\xe4ppy Birthday</a>\n </body>\n</html>')
- handle.close()
- dialogs.delegate = UnicodeTestDelegate()
- dialogs.delegate.choice = dialogs.BUTTON_YES
- myFeed = feed.Feed(u'file://' + self.filename)
- self.assertEqual(dialogs.delegate.numCalls, 1)
- myFeed.update()
- self.assertEqual(len(myFeed.items), 1)
- myItem = myFeed.items[0]
- myURL = myItem.getURL()
- self.assertEqual(str(myURL), myURL)
- thumb = myItem.getThumbnailURL()
- if thumb is not None:
- self.assertEqual(str(thumb), thumb)
-
-
-
- def testInvalidLatin1HTMLThumbs(self):
- (handle, self.filename) = mkstemp('.html')
- handle = file(self.filename, 'wb')
- handle.write('<?xml version="1.0" encoding="iso-8859-1"?>\n<html>\n <head>\n <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />\n <title>H\xc3\xa4ppy Birthday</title>\n </head>\n <body>\n <a href="http://www.wccatv.com/files/video/hbml.mov"><img src="http://www.wccatv.com/files/video/H\xc3\xa4ppy.png"/>H\xc3\xa4ppy Birthday</a>\n </body>\n</html>')
- handle.close()
- dialogs.delegate = UnicodeTestDelegate()
- dialogs.delegate.choice = dialogs.BUTTON_YES
- myFeed = feed.Feed(u'file://' + self.filename)
- self.assertEqual(dialogs.delegate.numCalls, 1)
- myFeed.update()
- self.assertEqual(len(myFeed.items), 1)
- myItem = myFeed.items[0]
- myURL = myItem.getURL()
- self.assertEqual(str(myURL), myURL)
- thumb = myItem.getThumbnailURL()
- if thumb is not None:
- self.assertEqual(str(thumb), thumb)
-
-
-
- def testDemocracyNowBug(self):
- url = resources.url('testdata/democracy-now-unicode-bug.xml')
- myFeed = feed.Feed(url)
- self.forceFeedParserCallback(myFeed)
- for item in myFeed.items:
- u'booya' in item.getTitle().lower()
-
-
-
- def testGetText(self):
- oldLang = None
-
- try:
- oldLang = os.environ['LANGUAGE']
- except:
- pass
-
- os.environ['LANGUAGE'] = 'fr'
- gtcache._gtcache = { }
- gettext.bindtextdomain('miro', resources.path('../../locale'))
- gettext.textdomain('miro')
- gettext.bind_textdomain_codeset('miro', 'UTF-8')
- self.assertEqual(gtcache.gettext('Settings'), u'Réglages')
- if oldLang is None:
- del os.environ['LANGUAGE']
- else:
- os.environ['LANGUAGE'] = oldLang
-
-
- def testTemplates(self):
- oldLang = None
-
- try:
- oldLang = os.environ['LANGUAGE']
- except:
- pass
-
- os.environ['LANGUAGE'] = 'fr'
- gtcache._gtcache = { }
- gettext.bindtextdomain('miro', resources.path('../../locale'))
- gettext.textdomain('miro')
- gettext.bind_textdomain_codeset('miro', 'UTF-8')
- out = template.fillStaticTemplate('unittest/simpleunicode', 'gtk-x11', 'noCookie')
- self.assert_(type(out) == types.UnicodeType)
- self.assert_(out.find(u'<h1>Häppy Birthday</h1>') == -1)
- self.assert_(out.find(u'<p>Réglages</p>') == -1)
- self.assert_(out.find(u'<h1>Häppy Birthday</h1>') != -1)
- self.assert_(out.find(u'<p>Réglages</p>') != -1)
- if oldLang is None:
- del os.environ['LANGUAGE']
- else:
- os.environ['LANGUAGE'] = oldLang
-
-
-
- class TemplateCompilerTest(framework.DemocracyTestCase):
-
- def testNonUnicode(self):
- self.assertRaises(util.DemocracyUnicodeError, (lambda : template_compiler.genRepeatText('out', '123', ' ', 'boo')))
- self.assertRaises(util.DemocracyUnicodeError, (lambda : template_compiler.genRepeatText('out', '123', ' ', 'Chinese Numbers %cbN00N8cN09VdbN94Q6dN03Q6bN5d')))
- self.assertEqual(u" out.write(u'Chinese Numbers \\u25cb\\u4e00\\u4e8c\\u4e09\\u56db\\u4e94\\u516d\\u4e03\\u516b\\u4e5d')\n", template_compiler.genRepeatText('out', '123', ' ', u'Chinese Numbers ○一二三四五六七八九'))
- self.assertRaises(util.DemocracyUnicodeError, (lambda : template_compiler.genRepeatTranslate('out', '123', ' ', ('boo', { }))))
- self.assertRaises(util.DemocracyUnicodeError, (lambda : template_compiler.genRepeatTranslate('out', '123', ' ', ('Chinese Numbers %cbN00N8cN09VdbN94Q6dN03Q6bN5d', { }))))
- self.assertRaises(util.DemocracyUnicodeError, (lambda : template_compiler.genRepeatTextHide('out', '123', ' ', (False, 'boo'))))
- self.assertRaises(util.DemocracyUnicodeError, (lambda : template_compiler.genRepeatTextHide('out', '123', ' ', (False, 'Chinese Numbers %cbN00N8cN09VdbN94Q6dN03Q6bN5d'))))
- self.assertRaises(util.DemocracyUnicodeError, (lambda : template_compiler.genRepeatTextHide('out', '123', ' ', (True, 'boo'))))
- self.assertRaises(util.DemocracyUnicodeError, (lambda : template_compiler.genRepeatTextHide('out', '123', ' ', (True, 'Chinese Numbers %cbN00N8cN09VdbN94Q6dN03Q6bN5d'))))
- self.assertEqual(u" if not (True):\n out.write(u'Chinese Numbers \\u25cb\\u4e00\\u4e8c\\u4e09\\u56db\\u4e94\\u516d\\u4e03\\u516b\\u4e5d')\n", template_compiler.genRepeatTextHide('out', '123', ' ', (True, u'Chinese Numbers ○一二三四五六七八九')))
- self.assertRaises(util.DemocracyUnicodeError, (lambda : template_compiler.genHideSection('out', '123', ' ', (False, [
- ((lambda a, b, c, d: 'boo'), 'ignored')]))
- ))
- self.assertRaises(util.DemocracyUnicodeError, (lambda : template_compiler.genHideSection('out', '123', ' ', (False, [
- ((lambda a, b, c, d: 'Chinese Numbers %cbN00N8cN09VdbN94Q6dN03Q6bN5d'), 'ignored')]))
- ))
- self.assertEqual(u' if not (False):\nChinese Numbers ○一二三四五六七八九', template_compiler.genHideSection('out', '123', ' ', (False, [
- ((lambda a, b, c, d: u'Chinese Numbers ○一二三四五六七八九'), 'ignored')])))
- self.assertRaises(util.DemocracyUnicodeError, (lambda : template_compiler.genQuoteAndFillAttr('out', '123', ' ', 'boo')))
- self.assertRaises(util.DemocracyUnicodeError, (lambda : template_compiler.genQuoteAndFillAttr('out', '123', ' ', 'Chinese Numbers %cbN00N8cN09VdbN94Q6dN03Q6bN5d')))
- self.assertEqual(u" out.write(quoteAndFillAttr(u'Chinese Numbers \\u25cb\\u4e00\\u4e8c\\u4e09\\u56db\\u4e94\\u516d\\u4e03\\u516b\\u4e5d',locals()))\n", template_compiler.genQuoteAndFillAttr('out', '123', ' ', u'Chinese Numbers ○一二三四五六七八九'))
-
-
-